﻿// 803 新年礼物.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
http://oj.daimayuan.top/course/14/problem/762

新年到了，蜗蜗老师想给 n位小朋友发新年礼物。

小朋友们的编号从 1到 n，每位小朋友都希望收到一份快乐值大于等于 100 的礼物。

此外，小朋友们之间还有一种特别的约束：x号小朋友会希望他得到的礼物的快乐值比 y号小朋友大，数据保证这些约束不会成环。

现在问你蜗蜗老师至少要准备快乐值总和是多少的礼物。

输入格式
第一行两个整数 n,m，表示小朋友数和约束数量。

接下来 m行，每行两个整数 x,y表示一个约束。

输出格式
输出一行一个整数表示蜗蜗老师至少要准备快乐值总和是多少的礼物。

样例输入
3 3
1 2
2 3
1 3
样例输出
303
数据规模
对于所有数据，保证 2≤n≤10000,0≤m≤100000,1≤x,y≤n,x≠y。
*/

#include <iostream>
#include <queue>
#include <cstring>

using namespace std;



const int N = 10010, M = 100010;
int h[N], e[M], ne[M], idx;
int din[N];
int sugar[N];
int n, m;

void add(int a, int b) {
    e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

int main()
{
    memset(h, -1, sizeof h);
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int a, b; cin >> a >> b;
        add(b, a);
        din[a]++;
    }

    queue<int> q;

    for (int i = 1; i <=n; i++) {
        if (din[i] == 0) {
            q.push(i);
            sugar[i] = 100;
        }
    }

    while (!q.empty()) {
        int curr = q.front(); q.pop();
        for (int i = h[curr]; i != -1; i = ne[i]) {
            int j = e[i];
            din[j]--;
            sugar[j] = max(sugar[j], sugar[curr] + 1);
            if (din[j] == 0) {
                q.push(j);
            }
        }
    }
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += sugar[i];
    }
    cout << sum << endl;

    return 0;
}

 